package cpsobras.movimento_item;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class MovimentoItemDAOImp implements MovimentoItemDAO {
	
	private Session session;

	public void setSession(Session session) {
		this.session = session;
	}

	@Override
	public void salvar(Movimento_Item movimento_item) {
		// TODO Auto-generated method stub
		this.session.save(movimento_item);
	}

	@Override
	public void atualizar(Movimento_Item movimento_item) {
		// TODO Auto-generated method stub
		this.session.update(movimento_item);
	}

	@Override
	public void excluir(Movimento_Item movimento_item) {
		// TODO Auto-generated method stub
		this.session.delete(movimento_item);
	}

	@Override
	public Movimento_Item carregar(Integer cod_movime) {
		// TODO Auto-generated method stub
		return (Movimento_Item) this.session.get(Movimento_Item.class, cod_movime);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Movimento_Item> listar(Integer cod_movime) {
		// TODO Auto-generated method stub
		Criteria criteria = this.session.createCriteria(Movimento_Item.class);
		criteria.add(Restrictions.eq("cod_movime", cod_movime));
		criteria.addOrder(Order.asc("seq_item"));
		return criteria.list();
	}
	
	@Override
	public Movimento_Item ProximoNumLivre(Integer cod_movime){
		 Query query = this.session.createSQLQuery("select max(i.seq_item) from tab_movimento_item i where i.cod_movime=:codigo");
		query.setParameter("codigo", cod_movime);
		
		return (Movimento_Item) query.uniqueResult();
		
	}

}
